#ifndef ROUTER_NANOOP_H
#define ROUTER_NANOOP_H

#include "node.h"
#include "channel.h"

#include "ip/fabrics.h"

typedef struct NodeRouterNanoOpParam
{
    List<List<int>> routing_map;
} NodeRouterNanoOpParam;

class NodeRouterNanoOp : public Node
{
public:
    List<int> reg_mask_map;
    bool reg_is_routing;
    List<bool> reg_deploy;
    ExecOp reg_nano_op;
    bool reg_is_working;
    ChannelExecOpFabricReceiver * port_receiver;
    List<ChannelExecOpFabricSender *> port_senders;

    NodeRouterNanoOp(Node *parent, NodeRouterNanoOpParam params);
    NodeTaskList tasks() const override;

    void task_receive_nano_op();
    void task_dispatch_nano_op();
};

#endif // ROUTER_NANOOP_H